<?php

/**
 * AUTOR actions.
 *
 * @package    OPENBIBLIOSOFT
 * @subpackage AUTOR
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12479 2008-10-31 10:54:40Z fabien $
 */
class AUTORActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
    if($this->getUser()->getAttribute('codigoUsuario') == null)
	{
		return  $this->renderText("<script type='text/javascript'> window.location = 'Entrada'; </script> ");
	}
  }
	
	public function executeListar()
	{
		$buscar = $this->getRequestParameter('Busqueda');
		$buscar = "%".$buscar."%";
		$campo = $this->getRequestParameter('Campo');
		
		$conexion = new Criteria();
		
		if($campo == 'Codigo'){ $conexion->add(AutorPeer::CODIGO, $buscar, Criteria::LIKE);}
		if($campo == 'PrimerApellido'){ $conexion->add(AutorPeer::PRIMERAPELLIDO, $buscar, Criteria::LIKE);}
		if($campo == 'SegundoApellido'){ $conexion->add(AutorPeer::SEGUNDOAPELLIDO, $buscar, Criteria::LIKE);}
		if($campo == 'PrimerNombre'){ $conexion->add(AutorPeer::PRIMERNOMBRE, $buscar, Criteria::LIKE);}
		if($campo == 'SegundoNombre'){ $conexion->add(AutorPeer::SEGUNDONOMBRE, $buscar, Criteria::LIKE);}
		if($campo == 'Todos')
		{		
			$c1 = $conexion->getNewCriterion(AutorPeer::CODIGO, $buscar, Criteria::LIKE);
			$c2 = $conexion->getNewCriterion(AutorPeer::PRIMERAPELLIDO, $buscar, Criteria::LIKE);
			$c3 = $conexion->getNewCriterion(AutorPeer::SEGUNDOAPELLIDO, $buscar, Criteria::LIKE);
			$c4 = $conexion->getNewCriterion(AutorPeer::PRIMERNOMBRE, $buscar, Criteria::LIKE);
			$c5 = $conexion->getNewCriterion(AutorPeer::SEGUNDONOMBRE, $buscar, Criteria::LIKE);
			$c4->addOr($c5);
			$c3->addOr($c4);
			$c2->addOr($c3);
			$c1->addOr($c2);
			$conexion->add($c1);
		}
		
		$numeroAutores = AutorPeer::doCount($conexion);
		$conexion->setLimit($this->getRequestParameter('limit'));
		$conexion->setOffset($this->getRequestParameter('start'));
		$autores = AutorPeer::doSelect($conexion);
		$pos = 0;
		$nbrows=0;
		$datos;
		
		foreach ($autores As $temporal)
		{
			$datos[$pos]['autorCodigo']=$temporal->getCodigo();
			$datos[$pos]['autorPrimerApellido']=$temporal->getPrimerapellido();
			$datos[$pos]['autorSegundoApellido']=$temporal->getSegundoapellido();
			$datos[$pos]['autorPrimerNombre']=$temporal->getPrimernombre();
			$datos[$pos]['autorSegundoNombre']=$temporal->getSegundonombre();
			$pos++;
			$nbrows++;
		}
		
		if($nbrows>0){
			$jsonresult = json_encode($datos);
			return  $this->renderText('({"total":"'.$numeroAutores.'","results":'.$jsonresult.'})');
		}
		else {
			return  $this->renderText('({"total":"0", "results":""})');
		}
	}

	public function executeGuardar()
	{
		$autor = new Autor();
		$autor->setCodigo($this->getRequestParameter('Codigo'));
		$autor->setPrimerapellido($this->getRequestParameter('PrimerApellido'));
		$autor->setSegundoapellido($this->getRequestParameter('SegundoApellido'));
		$autor->setPrimernombre($this->getRequestParameter('PrimerNombre'));
		$autor->setSegundonombre($this->getRequestParameter('SegundoNombre'));
		
		try
		{
			$autor->save();
		}
		catch (Exception $excepcionAutor)
		{
			return  $this->renderText("({success: false, errors: { reason: 'Exception: Hubo un problema creando el autor: ".$this->getRequestParameter('PrimerNombre')."'}})");
		}
		return  $this->renderText("({success: true, mensaje:'El autor fue creado exitosamente'})");
	}

	public function executeActualizar()
	{
		$codigo = $this->getRequestParameter('Codigo');
		$conexion = new Criteria();
		$conexion->add(AutorPeer::CODIGO, $codigo);
		$autor = AutorPeer::doSelectOne($conexion);

		if($autor)
		{
				$autor->setPrimerapellido($this->getRequestParameter('PrimerApellido'));
				$autor->setSegundoapellido($this->getRequestParameter('SegundoApellido'));
				$autor->setPrimernombre($this->getRequestParameter('PrimerNombre'));
				$autor->setSegundonombre($this->getRequestParameter('SegundoNombre'));
				
				try
				{
					$autor->save();
				}
				catch (Exception $excepcionAutor)
				{
					return  $this->renderText("({success: false, errors: { reason: 'Exception: Problemas al actualizar el autor: ".$this->getRequestParameter('Nombre')."'}})");
				
				}
				return  $this->renderText("({success: true, mensaje:'El autor fue actualizado exitosamente'})");
		} else {
			return  $this->renderText("({success: false, errors: { reason: 'No se a actualizado el autor'}})");
		}
	}

	public function executeEliminar()
	{
		$codigo = $this->getRequestParameter('Codigo');

		$conexion = new Criteria();
		$conexion->add(AutorPeer::CODIGO, $codigo);
		if($conexion)
		{
			$autor = AutorPeer::doSelectOne($conexion);
			
			try
			{
				$autor->delete();

			}
			catch (Exception $excepcionAutor)
			{
				return  $this->renderText("({success: false, errors: { reason: 'Exception: No se pudo eliminar el autor'}})");
			}
		
			return  $this->renderText("({success: true, mensaje:'El autor fue eliminado exitosamente'})");
		}
		else
		{
			return  $this->renderText("({success: false, errors: { reason: 'No se pudo eliminar el autor'}})");
		}
	}
}
